package component;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.FlowLayout;
import javax.swing.JButton;


/*
 * 배치 관리자 layout manager
 * jframe,jdialog,jpanel 같은 컨테이너에 하위  컴포넌트(button,label등)를 배치하려면
 * layout manager를 이용해야함
 * layout manager를 컨테이너에 추가하려면 setLayout 메서드를 이용
 * 또한 layout manager 에게 컴포넌트의 적정한 크기를 알려주려면 setPreferredSize 메서드를 사용
 * button.setPreferredSize(new Dimension(150,150));
 * layout Manager는 인터페이스임
 * 하지만 특별한 경우를 제외하고
 * 이것을 구현할 필요없음
 * layout manager <- flowlayout,border,card,grid,gridbag,box,spring
 * 
 * box , spring 등은 javax.swing 패키지에 포함됨
 * 
 * 
 * FlowLayout
 * 컴퍼넌트들을 수평방향으로 배치함
 * 먼저 추가한 컴포넌트는 나중에 추가된 컴포넌트의 왼쪽에 놓임
 * 만일 배치할 공간이 없으면 다음 줄에 놓음
 * 
 * 수평 행 정렬은 LEFT,RIGHT,CENTER,LEADING,TRALING등이 있음
 * hgap,vgap은 컴퍼넌트들간의 수평간격, 수직간격을 정의한 것임
 */
public class J12_FlowLayoutFrame extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J12_FlowLayoutFrame frame = new J12_FlowLayoutFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J12_FlowLayoutFrame() {
		setTitle("flowlaout");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 40));
		
		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1);
		
		JButton btnNewButton_3 = new JButton("New button");
		contentPane.add(btnNewButton_3);
		
		JButton btnNewButton_4 = new JButton("New button");
		contentPane.add(btnNewButton_4);
		
		JButton btnNewButton_2 = new JButton("New button");
		contentPane.add(btnNewButton_2);
		
		JButton btnNewButton = new JButton("New button");
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_5 = new JButton("New button");
		contentPane.add(btnNewButton_5);
	}

}
